<?php
class Slog_Config
{
	protected $_data;
	
	public function __construct()
	{
		
	}
	
	public function init()
	{
		// Obtenemos los ficheros de configuración que deberemos cargar
		//	en base al dominio por el que se entre.
		
		// - siempre se carga config.ini
		$files = array('config.ini');
		
		// - recorremos el host desde el TLD la host completo
		$domain = array();
		foreach (array_reverse(explode('.', $_SERVER['SERVER_NAME'])) as $dom) { // nombre.de.mi.dominio.com => com, dominio.com, mi.dominio.com, de.mi.dominio.com, nombre.de.mi.dominio.com
			$domain[] = $dom;
			$config_file = implode('.', $domain) . '.ini';
			if (is_file(SLOG_DIR_CONFIG . DIRECTORY_SEPARATOR . $config_file)) {
				$files[] = $config_file;
			}
		}
		
		// - procesamos todos los ficheros de configuración
		$config = array();
		foreach ($files as $file) {
			$config = array_merge($config, $this->loadConfig($file));
		}
		
		$this->_data = $config;
	}
	
	public function loadConfig($file)
	{
		$fullpath = SLOG_DIR_CONFIG . DIRECTORY_SEPARATOR . $file;
		return parse_ini_file($fullpath);
	}
	
	public function getString($name, $default=null)
	{
		foreach ($this->_data as $cname=>$cvalue) {
			if ($cname == $name) return $cvalue;
		}
		return $default;
	}
	
	public function getArray($name, $default=null)
	{
		$data = array();
		foreach ($this->_data as $cname=>$cvalue) {
			$M = null; // Zend Studio hack
			if (preg_match('/^'.$name.'(.*)$/i', $cname, $M)) {
				$token = substr($M[1], 1);
				$data[$token] = $cvalue;
			}
		}
		return count($data) > 0 ? $data : $default;
	}
}